#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDomDocument>
#include<QDomProcessingInstruction>
#include<QDomElement>
#include <QFile>
#include<QDebug>
#include<QTextStream>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::WriteXML()
{
  QDomDocument doc;
  doc.createProcessingInstruction("xml","version=\"1.0\" encoding=\"UTF-8\"");
  //创建根节点
  QDomElement root=doc.createElement("root");
  doc.appendChild(root);

  //第一子结点
  QDomElement childNode1=doc.createElement("childNode1");
  childNode1.setAttribute("attruKey","attriVal");
  QDomText node1=doc.createTextNode("childNode1 val");
  childNode1.appendChild(node1);
  //添加到根节点
  root.appendChild(childNode1);

  //第二子节点
  QDomElement childNode2=doc.createElement("childNode2");
  childNode2.setAttribute("attruKey","attriVal");

  //第二子节点的第一子结点
  QDomElement cChildNode1=doc.createElement("cChildNode1");
  cChildNode1.setAttribute("shuxing1","1");
  QDomText node2=doc.createTextNode("cChildNode1 Val");
  cChildNode1.appendChild(node2);
  childNode2.appendChild(cChildNode1);

  //第二子节点的第二子结点
  QDomElement cChildNode2=doc.createElement("cChildNode2");
  cChildNode2.setAttribute("shuxing2","2");
  QDomText node3=doc.createTextNode("cChildNode2 Val");
  cChildNode2.appendChild(node3);
  childNode2.appendChild(cChildNode2);
  root.appendChild(childNode2);




  //添加根节点


  QFile file("./myXml.xml");
  bool isok=file.open(QIODevice::WriteOnly|QIODevice::Truncate);
  if(isok==NULL)
  {
      qDebug()<<"文件打开失败";
      return;
  }

  //使用文本流来写入数据
  QTextStream stream(&file);
  doc.save(stream,4);//缩进4格
  file.close();

}

void MainWindow::ReadXML()
{
  QFile file("./myXml.xml");
  bool isok=file.open(QIODevice::ReadOnly);
  if(isok==false)
  {
      qDebug()<<"文件打开失败";
      file.close();
      return;
  }
  QDomDocument doc;
  bool ok=doc.setContent(&file);
  if(ok==false)
  {
      file.close();
      return;
  }
  file.close();

  QDomElement root=doc.documentElement();
  QDomNode node1 =root.firstChild();

  QDomElement childNode1=node1.toElement();
  QString key1=childNode1.attribute("attruKey");
  QDomNode node2=childNode1.firstChild();
  QString nodename=node2.nodeValue();
  qDebug()<<"第一子结点的属性和值";
  qDebug()<<key1<<nodename;

  node1=node1.nextSibling();
  QDomElement childNode2 =node1.toElement();
  QString attr2=childNode2.attribute("attruKey");
  qDebug()<<"第二节点的属性值"<<attr2;

  //获取第二节点的第一子结点
  QDomNode node3= childNode2.firstChild();
  while(!node3.isNull())
  {
     QDomElement e= node3.toElement();
     if(!e.isNull())
     {
         qDebug()<<e.firstChild().nodeValue();
     }
     node3=node3.nextSibling();
  }

}

